home *** CD-ROM | disk | FTP | other *** search
/ PC-SIG Library 8 / PC-SIG Library CD-ROM (8th Edition) (1990-04).iso / 001_100 / disk0004 / create.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1982-11-10  |  3.0 KB  |  87 lines

  1. 1  CLS:KEY OFF
  2. 2  REM  AN EXAMPLE OF HOW TO USE THIS DBMS FOLLOWS: TYPE "TEL" FOR INDEX FILE
  3. 3  REM   NAME: TYPE "TEL1" FOR SCREEN FORM FILE NAME (THIS LISTS THE FORMAT FOR
  4. 4  REM   YOUR DATA LISTINGS). TYPE "TEL2" FOR THE DATA FILE NAME (THIS LISTS THE
  5. 5  REM   ACTUAL DATA, I.E. ADDRESSES AND TELEPHONES).
  6. 100  REM--------------------------------------------------------
  7. 105  REM
  8. 110  REM                      CREATE.BAS
  9. 115  REM     Create a database from information about the files
  10. 120  REM
  11. 125  REM--------------------------------------------------------
  12. 130  GOTO 340
  13. 140  REM--------------------------------------------------------
  14. 145  REM   WRITE ( P%,FLAG%,KEYS$, ARC%, LINK% )
  15. 150  REM--------------------------------------------------------
  16. 170  REC$=SPACE$ (127)
  17. 180  FOR INDEX%=1 TO N%
  18. 190   CH%=SIZE% * (INDEX%-1)
  19. 200   ON FLAG% (INDEX%)+1 GOTO 210,230,250
  20. 210     FLAG$="E":GOTO 260
  21. 220     REM
  22. 230     FLAG%="F":GOTO 260
  23. 240     REM
  24. 250     FLAG%="D"
  25. 260   MID$(REC$,CH%+1,1)=FLAG$
  26. 270   MID$(REC$,CH%+2,SIZE%-3)=KEYS$(INDEX%)
  27. 280   MID$(REC$,CH%+SIZE%-1,2)=MKI$(ARC%(INDEX%))
  28. 290  NEXT INDEX%
  29. 300  MID$(REC$,126,2)=MKI$(LINK%)
  30. 310  LSET R$=REC$
  31. 320  PUT 1, P%
  32. 330  RETURN
  33. 340  REM----------------------------------------------------
  34. 350  REM   create: make header file for b-tree index
  35. 360  REM----------------------------------------------------
  36. 370  FOR I%=1 TO 10:PRINT:NEXT I%
  37. 380  PRINT"    Create Index File Header"
  38. 390  PRINT:PRINT:PRINT
  39. 395  LINE INPUT   "Enter index file name: " ;INDEX$
  40. 400  LINE INPUT   "      Correct (Y/N) ? ";Y$
  41. 410        IF Y$<>"Y" AND Y$<>"y" THEN 395
  42. 420  PRINT "How many characters per search key ";:INPUT SIZE%
  43. 430  LINE INPUT   "      Correct (Y/N) ? ";Y$
  44. 440        IF Y$<>"Y" AND Y$<>"y" THEN 420
  45. 450  LINE INPUT   "Enter the file name for the screen form : ";FSCREEN$
  46. 460  LINE INPUT   "      Correct (Y/N) ? ";Y$
  47. 470        IF Y$<>"Y" AND Y$<>"y" THEN 450
  48. 475  PRINT"How many screen lines in form";:INPUT LINS%
  49. 480  LINE INPUT   "      Correct (Y/N) ? ";Y$
  50. 485        IF Y$<>"Y" AND Y$<>"y" THEN 475
  51. 490  LINE INPUT   "Enter data file name : ";MAST$
  52. 495  LINE INPUT   "      Correct (Y/N) ? ";Y$
  53. 500        IF Y$<>"Y" AND Y$<>"y" THEN 490
  54. 505  PRINT"Enter number of fields in screen form : ";:INPUT AN%
  55. 510  LINE INPUT   "      Correct (Y/N) ? ";Y$
  56. 515        IF Y$<>"Y" AND Y$<>"y" THEN 505
  57. 520  REM-------------------------------------------------------
  58. 525  REM    write header file
  59. 530  REM-------------------------------------------------------
  60. 535  SIZE%=SIZE%+3
  61. 540  N%=INT(126/SIZE%)
  62. 545  OPEN "O",2, "HEADER.DAT"
  63. 550  ROOT%=1
  64. 555  LNF%=1:LNG%=0
  65. 560  P%=ROOT%
  66. 565  PRINT #2,FSCREEN$;",";ROOT%;LNG%;LNF%;AN%;LINS%;N%;SIZE%;INDEX$;",";MAST$
  67. 570  CLOSE 2
  68. 575  REM-------------------------------------------
  69. 580  REM   WRITE FIRST ROOT NODE
  70. 585  REM--------------------------------------------
  71. 590  DIM FLAG%(N%+1),KEYS$(N%+1),ARC%(N%+1)
  72. 595  ZERO$=SPACE$(SIZE%-3):LSET ZERO$="0"
  73. 600  FOR I0%=1 TO N%
  74. 605   KEYS$(I0%)=SPACE$(SIZE%-3)
  75. 610   FLAG%(I0%)=0:KEYS$(I0%)=ZERO$:ARC%(I0%)=0
  76. 615  NEXT I0%
  77. 620  LINK%=0
  78. 625  OPEN "R",1,INDEX$
  79. 630  FIELD 1, 127 AS R$
  80. 635  GOSUB 140
  81. 640  CLOSE 1
  82. 645  REM----------------------------------------------
  83. 650  REM    ALL DONE. RETURN TO DBMENU.BAS
  84. 655  REM-----------------------------------------------
  85. 660  RUN "DBMENU"
  86. 665  END
  87.